(globalThis.TURBOPACK || (globalThis.TURBOPACK = [])).push([typeof document === "object" ? document.currentScript : undefined,
"[turbopack]/browser/dev/hmr-client/hmr-client.ts [client] (ecmascript)", ((__turbopack_context__) => {
"use strict";
///
///
///
///
__turbopack_context__.s([
"connect",
()=>connect,
"setHooks",
()=>setHooks,
"subscribeToUpdate",
()=>subscribeToUpdate
]);
function connect(param) {
let { addMessageListener, sendMessage, onUpdateError = console.error } = param;
addMessageListener((msg)=>{
switch(msg.type){
case 'turbopack-connected':
handleSocketConnected(sendMessage);
break;
default:
try {
if (Array.isArray(msg.data)) {
for(let i = 0; i < msg.data.length; i++){
handleSocketMessage(msg.data[i]);
}
} else {
handleSocketMessage(msg.data);
}
applyAggregatedUpdates();
} catch (e) {
console.warn('[Fast Refresh] performing full reload\n\n' + "Fast Refresh will perform a full reload when you edit a file that's imported by modules outside of the React rendering tree.\n" + 'You might have a file which exports a React component but also exports a value that is imported by a non-React component file.\n' + 'Consider migrating the non-React component export to a separate file and importing it into both files.\n\n' + 'It is also possible the parent component of the component you edited is a class component, which disables Fast Refresh.\n' + 'Fast Refresh requires at least one parent function component in your React tree.');
onUpdateError(e);
location.reload();
}
break;
}
});
const queued = globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS;
if (queued != null && !Array.isArray(queued)) {
throw new Error('A separate HMR handler was already registered');
}
globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = {
push: (param)=>{
let [chunkPath, callback] = param;
subscribeToChunkUpdate(chunkPath, sendMessage, callback);
}
};
if (Array.isArray(queued)) {
for (const [chunkPath, callback] of queued){
subscribeToChunkUpdate(chunkPath, sendMessage, callback);
}
}
}
const updateCallbackSets = new Map();
function sendJSON(sendMessage, message) {
sendMessage(JSON.stringify(message));
}
function resourceKey(resource) {
return JSON.stringify({
path: resource.path,
headers: resource.headers || null
});
}
function subscribeToUpdates(sendMessage, resource) {
sendJSON(sendMessage, {
type: 'turbopack-subscribe',
...resource
});
return ()=>{
sendJSON(sendMessage, {
type: 'turbopack-unsubscribe',
...resource
});
};
}
function handleSocketConnected(sendMessage) {
for (const key of updateCallbackSets.keys()){
subscribeToUpdates(sendMessage, JSON.parse(key));
}
}
// we aggregate all pending updates until the issues are resolved
const chunkListsWithPendingUpdates = new Map();
function aggregateUpdates(msg) {
const key = resourceKey(msg.resource);
let aggregated = chunkListsWithPendingUpdates.get(key);
if (aggregated) {
aggregated.instruction = mergeChunkListUpdates(aggregated.instruction, msg.instruction);
} else {
chunkListsWithPendingUpdates.set(key, msg);
}
}
function applyAggregatedUpdates() {
if (chunkListsWithPendingUpdates.size === 0) return;
hooks.beforeRefresh();
for (const msg of chunkListsWithPendingUpdates.values()){
triggerUpdate(msg);
}
chunkListsWithPendingUpdates.clear();
finalizeUpdate();
}
function mergeChunkListUpdates(updateA, updateB) {
let chunks;
if (updateA.chunks != null) {
if (updateB.chunks == null) {
chunks = updateA.chunks;
} else {
chunks = mergeChunkListChunks(updateA.chunks, updateB.chunks);
}
} else if (updateB.chunks != null) {
chunks = updateB.chunks;
}
let merged;
if (updateA.merged != null) {
if (updateB.merged == null) {
merged = updateA.merged;
} else {
// Since `merged` is an array of updates, we need to merge them all into
// one, consistent update.
// Since there can only be `EcmascriptMergeUpdates` in the array, there is
// no need to key on the `type` field.
let update = updateA.merged[0];
for(let i = 1; i < updateA.merged.length; i++){
update = mergeChunkListEcmascriptMergedUpdates(update, updateA.merged[i]);
}
for(let i = 0; i < updateB.merged.length; i++){
update = mergeChunkListEcmascriptMergedUpdates(update, updateB.merged[i]);
}
merged = [
update
];
}
} else if (updateB.merged != null) {
merged = updateB.merged;
}
return {
type: 'ChunkListUpdate',
chunks,
merged
};
}
function mergeChunkListChunks(chunksA, chunksB) {
const chunks = {};
for (const [chunkPath, chunkUpdateA] of Object.entries(chunksA)){
const chunkUpdateB = chunksB[chunkPath];
if (chunkUpdateB != null) {
const mergedUpdate = mergeChunkUpdates(chunkUpdateA, chunkUpdateB);
if (mergedUpdate != null) {
chunks[chunkPath] = mergedUpdate;
}
} else {
chunks[chunkPath] = chunkUpdateA;
}
}
for (const [chunkPath, chunkUpdateB] of Object.entries(chunksB)){
if (chunks[chunkPath] == null) {
chunks[chunkPath] = chunkUpdateB;
}
}
return chunks;
}
function mergeChunkUpdates(updateA, updateB) {
if (updateA.type === 'added' && updateB.type === 'deleted' || updateA.type === 'deleted' && updateB.type === 'added') {
return undefined;
}
if (updateA.type === 'partial') {
invariant(updateA.instruction, 'Partial updates are unsupported');
}
if (updateB.type === 'partial') {
invariant(updateB.instruction, 'Partial updates are unsupported');
}
return undefined;
}
function mergeChunkListEcmascriptMergedUpdates(mergedA, mergedB) {
const entries = mergeEcmascriptChunkEntries(mergedA.entries, mergedB.entries);
const chunks = mergeEcmascriptChunksUpdates(mergedA.chunks, mergedB.chunks);
return {
type: 'EcmascriptMergedUpdate',
entries,
chunks
};
}
function mergeEcmascriptChunkEntries(entriesA, entriesB) {
return {
...entriesA,
...entriesB
};
}
function mergeEcmascriptChunksUpdates(chunksA, chunksB) {
if (chunksA == null) {
return chunksB;
}
if (chunksB == null) {
return chunksA;
}
const chunks = {};
for (const [chunkPath, chunkUpdateA] of Object.entries(chunksA)){
const chunkUpdateB = chunksB[chunkPath];
if (chunkUpdateB != null) {
const mergedUpdate = mergeEcmascriptChunkUpdates(chunkUpdateA, chunkUpdateB);
if (mergedUpdate != null) {
chunks[chunkPath] = mergedUpdate;
}
} else {
chunks[chunkPath] = chunkUpdateA;
}
}
for (const [chunkPath, chunkUpdateB] of Object.entries(chunksB)){
if (chunks[chunkPath] == null) {
chunks[chunkPath] = chunkUpdateB;
}
}
if (Object.keys(chunks).length === 0) {
return undefined;
}
return chunks;
}
function mergeEcmascriptChunkUpdates(updateA, updateB) {
if (updateA.type === 'added' && updateB.type === 'deleted') {
// These two completely cancel each other out.
return undefined;
}
if (updateA.type === 'deleted' && updateB.type === 'added') {
const added = [];
const deleted = [];
var _updateA_modules;
const deletedModules = new Set((_updateA_modules = updateA.modules) !== null && _updateA_modules !== void 0 ? _updateA_modules : []);
var _updateB_modules;
const addedModules = new Set((_updateB_modules = updateB.modules) !== null && _updateB_modules !== void 0 ? _updateB_modules : []);
for (const moduleId of addedModules){
if (!deletedModules.has(moduleId)) {
added.push(moduleId);
}
}
for (const moduleId of deletedModules){
if (!addedModules.has(moduleId)) {
deleted.push(moduleId);
}
}
if (added.length === 0 && deleted.length === 0) {
return undefined;
}
return {
type: 'partial',
added,
deleted
};
}
if (updateA.type === 'partial' && updateB.type === 'partial') {
var _updateA_added, _updateB_added;
const added = new Set([
...(_updateA_added = updateA.added) !== null && _updateA_added !== void 0 ? _updateA_added : [],
...(_updateB_added = updateB.added) !== null && _updateB_added !== void 0 ? _updateB_added : []
]);
var _updateA_deleted, _updateB_deleted;
const deleted = new Set([
...(_updateA_deleted = updateA.deleted) !== null && _updateA_deleted !== void 0 ? _updateA_deleted : [],
...(_updateB_deleted = updateB.deleted) !== null && _updateB_deleted !== void 0 ? _updateB_deleted : []
]);
if (updateB.added != null) {
for (const moduleId of updateB.added){
deleted.delete(moduleId);
}
}
if (updateB.deleted != null) {
for (const moduleId of updateB.deleted){
added.delete(moduleId);
}
}
return {
type: 'partial',
added: [
...added
],
deleted: [
...deleted
]
};
}
if (updateA.type === 'added' && updateB.type === 'partial') {
var _updateA_modules1, _updateB_added1;
const modules = new Set([
...(_updateA_modules1 = updateA.modules) !== null && _updateA_modules1 !== void 0 ? _updateA_modules1 : [],
...(_updateB_added1 = updateB.added) !== null && _updateB_added1 !== void 0 ? _updateB_added1 : []
]);
var _updateB_deleted1;
for (const moduleId of (_updateB_deleted1 = updateB.deleted) !== null && _updateB_deleted1 !== void 0 ? _updateB_deleted1 : []){
modules.delete(moduleId);
}
return {
type: 'added',
modules: [
...modules
]
};
}
if (updateA.type === 'partial' && updateB.type === 'deleted') {
var _updateB_modules1;
// We could eagerly return `updateB` here, but this would potentially be
// incorrect if `updateA` has added modules.
const modules = new Set((_updateB_modules1 = updateB.modules) !== null && _updateB_modules1 !== void 0 ? _updateB_modules1 : []);
if (updateA.added != null) {
for (const moduleId of updateA.added){
modules.delete(moduleId);
}
}
return {
type: 'deleted',
modules: [
...modules
]
};
}
// Any other update combination is invalid.
return undefined;
}
function invariant(_, message) {
throw new Error("Invariant: ".concat(message));
}
const CRITICAL = [
'bug',
'error',
'fatal'
];
function compareByList(list, a, b) {
const aI = list.indexOf(a) + 1 || list.length;
const bI = list.indexOf(b) + 1 || list.length;
return aI - bI;
}
const chunksWithIssues = new Map();
function emitIssues() {
const issues = [];
const deduplicationSet = new Set();
for (const [_, chunkIssues] of chunksWithIssues){
for (const chunkIssue of chunkIssues){
if (deduplicationSet.has(chunkIssue.formatted)) continue;
issues.push(chunkIssue);
deduplicationSet.add(chunkIssue.formatted);
}
}
sortIssues(issues);
hooks.issues(issues);
}
function handleIssues(msg) {
const key = resourceKey(msg.resource);
let hasCriticalIssues = false;
for (const issue of msg.issues){
if (CRITICAL.includes(issue.severity)) {
hasCriticalIssues = true;
}
}
if (msg.issues.length > 0) {
chunksWithIssues.set(key, msg.issues);
} else if (chunksWithIssues.has(key)) {
chunksWithIssues.delete(key);
}
emitIssues();
return hasCriticalIssues;
}
const SEVERITY_ORDER = [
'bug',
'fatal',
'error',
'warning',
'info',
'log'
];
const CATEGORY_ORDER = [
'parse',
'resolve',
'code generation',
'rendering',
'typescript',
'other'
];
function sortIssues(issues) {
issues.sort((a, b)=>{
const first = compareByList(SEVERITY_ORDER, a.severity, b.severity);
if (first !== 0) return first;
return compareByList(CATEGORY_ORDER, a.category, b.category);
});
}
const hooks = {
beforeRefresh: ()=>{},
refresh: ()=>{},
buildOk: ()=>{},
issues: (_issues)=>{}
};
function setHooks(newHooks) {
Object.assign(hooks, newHooks);
}
function handleSocketMessage(msg) {
sortIssues(msg.issues);
handleIssues(msg);
switch(msg.type){
case 'issues':
break;
case 'partial':
// aggregate updates
aggregateUpdates(msg);
break;
default:
// run single update
const runHooks = chunkListsWithPendingUpdates.size === 0;
if (runHooks) hooks.beforeRefresh();
triggerUpdate(msg);
if (runHooks) finalizeUpdate();
break;
}
}
function finalizeUpdate() {
hooks.refresh();
hooks.buildOk();
// This is used by the Next.js integration test suite to notify it when HMR
// updates have been completed.
// TODO: Only run this in test environments (gate by `process.env.__NEXT_TEST_MODE`)
if (globalThis.__NEXT_HMR_CB) {
globalThis.__NEXT_HMR_CB();
globalThis.__NEXT_HMR_CB = null;
}
}
function subscribeToChunkUpdate(chunkListPath, sendMessage, callback) {
return subscribeToUpdate({
path: chunkListPath
}, sendMessage, callback);
}
function subscribeToUpdate(resource, sendMessage, callback) {
const key = resourceKey(resource);
let callbackSet;
const existingCallbackSet = updateCallbackSets.get(key);
if (!existingCallbackSet) {
callbackSet = {
callbacks: new Set([
callback
]),
unsubscribe: subscribeToUpdates(sendMessage, resource)
};
updateCallbackSets.set(key, callbackSet);
} else {
existingCallbackSet.callbacks.add(callback);
callbackSet = existingCallbackSet;
}
return ()=>{
callbackSet.callbacks.delete(callback);
if (callbackSet.callbacks.size === 0) {
callbackSet.unsubscribe();
updateCallbackSets.delete(key);
}
};
}
function triggerUpdate(msg) {
const key = resourceKey(msg.resource);
const callbackSet = updateCallbackSets.get(key);
if (!callbackSet) {
return;
}
for (const callback of callbackSet.callbacks){
callback(msg);
}
if (msg.type === 'notFound') {
// This indicates that the resource which we subscribed to either does not exist or
// has been deleted. In either case, we should clear all update callbacks, so if a
// new subscription is created for the same resource, it will send a new "subscribe"
// message to the server.
// No need to send an "unsubscribe" message to the server, it will have already
// dropped the update stream before sending the "notFound" message.
updateCallbackSets.delete(key);
}
}
}),
"[project]/src/lib/utils.ts [client] (ecmascript)", ((__turbopack_context__) => {
"use strict";
__turbopack_context__.s([
"cn",
()=>cn
]);
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$clsx$2f$dist$2f$clsx$2e$mjs__$5b$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/clsx/dist/clsx.mjs [client] (ecmascript)");
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$tailwind$2d$merge$2f$dist$2f$bundle$2d$mjs$2e$mjs__$5b$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/tailwind-merge/dist/bundle-mjs.mjs [client] (ecmascript)");
;
;
function cn() {
for(var _len = arguments.length, inputs = new Array(_len), _key = 0; _key < _len; _key++){
inputs[_key] = arguments[_key];
}
return (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$tailwind$2d$merge$2f$dist$2f$bundle$2d$mjs$2e$mjs__$5b$client$5d$__$28$ecmascript$29$__["twMerge"])((0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$clsx$2f$dist$2f$clsx$2e$mjs__$5b$client$5d$__$28$ecmascript$29$__["clsx"])(inputs));
}
if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) {
__turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$);
}
}),
"[project]/src/components/ui/toast.tsx [client] (ecmascript)", ((__turbopack_context__) => {
"use strict";
__turbopack_context__.s([
"Toast",
()=>Toast,
"ToastAction",
()=>ToastAction,
"ToastClose",
()=>ToastClose,
"ToastDescription",
()=>ToastDescription,
"ToastProvider",
()=>ToastProvider,
"ToastTitle",
()=>ToastTitle,
"ToastViewport",
()=>ToastViewport
]);
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/react/jsx-dev-runtime.js [client] (ecmascript)");
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$react$2f$index$2e$js__$5b$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/react/index.js [client] (ecmascript)");
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$toast$2f$dist$2f$index$2e$mjs__$5b$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/@radix-ui/react-toast/dist/index.mjs [client] (ecmascript)");
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$class$2d$variance$2d$authority$2f$dist$2f$index$2e$mjs__$5b$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/class-variance-authority/dist/index.mjs [client] (ecmascript)");
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$x$2e$js__$5b$client$5d$__$28$ecmascript$29$__$3c$export__default__as__X$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/x.js [client] (ecmascript) ");
var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$utils$2e$ts__$5b$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/lib/utils.ts [client] (ecmascript)");
;
;
;
;
;
;
const ToastProvider = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$toast$2f$dist$2f$index$2e$mjs__$5b$client$5d$__$28$ecmascript$29$__["Provider"];
const ToastViewport = /*#__PURE__*/ __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$react$2f$index$2e$js__$5b$client$5d$__$28$ecmascript$29$__["forwardRef"](_c = (param, ref)=>{
let { className, ...props } = param;
return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$toast$2f$dist$2f$index$2e$mjs__$5b$client$5d$__$28$ecmascript$29$__["Viewport"], {
"data-sg-el": "src/components/ui/toast.tsx:14:2",
"data-sg-name": "ToastPrimitives.Viewport",
ref: ref,
className: (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$utils$2e$ts__$5b$client$5d$__$28$ecmascript$29$__["cn"])("fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]", className),
...props
}, void 0, false, {
fileName: "[project]/src/components/ui/toast.tsx",
lineNumber: 14,
columnNumber: 3
}, ("TURBOPACK compile-time value", void 0));
});
_c1 = ToastViewport;
ToastViewport.displayName = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$toast$2f$dist$2f$index$2e$mjs__$5b$client$5d$__$28$ecmascript$29$__["Viewport"].displayName;
const toastVariants = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$class$2d$variance$2d$authority$2f$dist$2f$index$2e$mjs__$5b$client$5d$__$28$ecmascript$29$__["cva"])("group pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-md border p-4 pr-6 shadow-xs transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full", {
variants: {
variant: {
default: "border bg-background text-foreground",
destructive: "destructive group border-destructive bg-destructive text-destructive-foreground"
}
},
defaultVariants: {
variant: "default"
}
});
const Toast = /*#__PURE__*/ __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$react$2f$index$2e$js__$5b$client$5d$__$28$ecmascript$29$__["forwardRef"](_c2 = (param, ref)=>{
let { className, variant, ...props } = param;
return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$toast$2f$dist$2f$index$2e$mjs__$5b$client$5d$__$28$ecmascript$29$__["Root"], {
"data-sg-el": "src/components/ui/toast.tsx:47:4",
"data-sg-name": "ToastPrimitives.Root",
ref: ref,
className: (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$utils$2e$ts__$5b$client$5d$__$28$ecmascript$29$__["cn"])(toastVariants({
variant
}), className),
...props
}, void 0, false, {
fileName: "[project]/src/components/ui/toast.tsx",
lineNumber: 47,
columnNumber: 5
}, ("TURBOPACK compile-time value", void 0));
});
_c3 = Toast;
Toast.displayName = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$toast$2f$dist$2f$index$2e$mjs__$5b$client$5d$__$28$ecmascript$29$__["Root"].displayName;
const ToastAction = /*#__PURE__*/ __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$react$2f$index$2e$js__$5b$client$5d$__$28$ecmascript$29$__["forwardRef"](_c4 = (param, ref)=>{
let { className, ...props } = param;
return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$toast$2f$dist$2f$index$2e$mjs__$5b$client$5d$__$28$ecmascript$29$__["Action"], {
"data-sg-el": "src/components/ui/toast.tsx:60:2",
"data-sg-name": "ToastPrimitives.Action",
ref: ref,
className: (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$utils$2e$ts__$5b$client$5d$__$28$ecmascript$29$__["cn"])("inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium transition-colors hover:bg-secondary focus:outline-none focus:ring-1 focus:ring-ring disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive", className),
...props
}, void 0, false, {
fileName: "[project]/src/components/ui/toast.tsx",
lineNumber: 60,
columnNumber: 3
}, ("TURBOPACK compile-time value", void 0));
});
_c5 = ToastAction;
ToastAction.displayName = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$toast$2f$dist$2f$index$2e$mjs__$5b$client$5d$__$28$ecmascript$29$__["Action"].displayName;
const ToastClose = /*#__PURE__*/ __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$react$2f$index$2e$js__$5b$client$5d$__$28$ecmascript$29$__["forwardRef"](_c6 = (param, ref)=>{
let { className, ...props } = param;
return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$toast$2f$dist$2f$index$2e$mjs__$5b$client$5d$__$28$ecmascript$29$__["Close"], {
"data-sg-el": "src/components/ui/toast.tsx:75:2",
"data-sg-name": "ToastPrimitives.Close",
ref: ref,
className: (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$utils$2e$ts__$5b$client$5d$__$28$ecmascript$29$__["cn"])("absolute right-1 top-1 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-1 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600", className),
"toast-close": "",
...props,
children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$x$2e$js__$5b$client$5d$__$28$ecmascript$29$__$3c$export__default__as__X$3e$__["X"], {
"data-sg-el": "src/components/ui/toast.tsx:84:4",
"data-sg-name": "X",
className: "h-4 w-4"
}, void 0, false, {
fileName: "[project]/src/components/ui/toast.tsx",
lineNumber: 84,
columnNumber: 5
}, ("TURBOPACK compile-time value", void 0))
}, void 0, false, {
fileName: "[project]/src/components/ui/toast.tsx",
lineNumber: 75,
columnNumber: 3
}, ("TURBOPACK compile-time value", void 0));
});
_c7 = ToastClose;
ToastClose.displayName = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$toast$2f$dist$2f$index$2e$mjs__$5b$client$5d$__$28$ecmascript$29$__["Close"].displayName;
const ToastTitle = /*#__PURE__*/ __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$react$2f$index$2e$js__$5b$client$5d$__$28$ecmascript$29$__["forwardRef"](_c8 = (param, ref)=>{
let { className, ...props } = param;
return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$toast$2f$dist$2f$index$2e$mjs__$5b$client$5d$__$28$ecmascript$29$__["Title"], {
"data-sg-el": "src/components/ui/toast.tsx:93:2",
"data-sg-name": "ToastPrimitives.Title",
ref: ref,
className: (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$utils$2e$ts__$5b$client$5d$__$28$ecmascript$29$__["cn"])("text-sm font-semibold [&+div]:text-xs", className),
...props
}, void 0, false, {
fileName: "[project]/src/components/ui/toast.tsx",
lineNumber: 93,
columnNumber: 3
}, ("TURBOPACK compile-time value", void 0));
});
_c9 = ToastTitle;
ToastTitle.displayName = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$toast$2f$dist$2f$index$2e$mjs__$5b$client$5d$__$28$ecmascript$29$__["Title"].displayName;
const ToastDescription = /*#__PURE__*/ __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$react$2f$index$2e$js__$5b$client$5d$__$28$ecmascript$29$__["forwardRef"](_c10 = (param, ref)=>{
let { className, ...props } = param;
return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$toast$2f$dist$2f$index$2e$mjs__$5b$client$5d$__$28$ecmascript$29$__["Description"], {
"data-sg-el": "src/components/ui/toast.tsx:105:2",
"data-sg-name": "ToastPrimitives.Description",
ref: ref,
className: (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$utils$2e$ts__$5b$client$5d$__$28$ecmascript$29$__["cn"])("text-sm opacity-90", className),
...props
}, void 0, false, {
fileName: "[project]/src/components/ui/toast.tsx",
lineNumber: 105,
columnNumber: 3
}, ("TURBOPACK compile-time value", void 0));
});
_c11 = ToastDescription;
ToastDescription.displayName = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$toast$2f$dist$2f$index$2e$mjs__$5b$client$5d$__$28$ecmascript$29$__["Description"].displayName;
;
var _c, _c1, _c2, _c3, _c4, _c5, _c6, _c7, _c8, _c9, _c10, _c11;
__turbopack_context__.k.register(_c, "ToastViewport$React.forwardRef");
__turbopack_context__.k.register(_c1, "ToastViewport");
__turbopack_context__.k.register(_c2, "Toast$React.forwardRef");
__turbopack_context__.k.register(_c3, "Toast");
__turbopack_context__.k.register(_c4, "ToastAction$React.forwardRef");
__turbopack_context__.k.register(_c5, "ToastAction");
__turbopack_context__.k.register(_c6, "ToastClose$React.forwardRef");
__turbopack_context__.k.register(_c7, "ToastClose");
__turbopack_context__.k.register(_c8, "ToastTitle$React.forwardRef");
__turbopack_context__.k.register(_c9, "ToastTitle");
__turbopack_context__.k.register(_c10, "ToastDescription$React.forwardRef");
__turbopack_context__.k.register(_c11, "ToastDescription");
if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) {
__turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$);
}
}),
"[project]/src/hooks/use-toast.ts [client] (ecmascript)", ((__turbopack_context__) => {
"use strict";
__turbopack_context__.s([
"reducer",
()=>reducer,
"toast",
()=>toast,
"useToast",
()=>useToast
]);
// Inspired by react-hot-toast library
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$react$2f$index$2e$js__$5b$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/react/index.js [client] (ecmascript)");
var _s = __turbopack_context__.k.signature();
"use client";
;
const TOAST_LIMIT = 1;
const TOAST_REMOVE_DELAY = 1000000;
const actionTypes = {
ADD_TOAST: "ADD_TOAST",
UPDATE_TOAST: "UPDATE_TOAST",
DISMISS_TOAST: "DISMISS_TOAST",
REMOVE_TOAST: "REMOVE_TOAST"
};
let count = 0;
function genId() {
count = (count + 1) % Number.MAX_SAFE_INTEGER;
return count.toString();
}
const toastTimeouts = new Map();
const addToRemoveQueue = (toastId)=>{
if (toastTimeouts.has(toastId)) {
return;
}
const timeout = setTimeout(()=>{
toastTimeouts.delete(toastId);
dispatch({
type: actionTypes.REMOVE_TOAST,
toastId: toastId
});
}, TOAST_REMOVE_DELAY);
toastTimeouts.set(toastId, timeout);
};
const reducer = (state, action)=>{
switch(action.type){
case actionTypes.ADD_TOAST:
return {
...state,
toasts: [
action.toast,
...state.toasts
].slice(0, TOAST_LIMIT)
};
case actionTypes.UPDATE_TOAST:
return {
...state,
toasts: state.toasts.map((t)=>t.id === action.toast.id ? {
...t,
...action.toast
} : t)
};
case actionTypes.DISMISS_TOAST:
{
const { toastId } = action;
// ! Side effects ! - This could be extracted into a dismissToast() action,
// but I'll keep it here for simplicity
if (toastId) {
addToRemoveQueue(toastId);
} else {
state.toasts.forEach((toast)=>{
addToRemoveQueue(toast.id);
});
}
return {
...state,
toasts: state.toasts.map((t)=>t.id === toastId || toastId === undefined ? {
...t,
open: false
} : t)
};
}
case actionTypes.REMOVE_TOAST:
if (action.toastId === undefined) {
return {
...state,
toasts: []
};
}
return {
...state,
toasts: state.toasts.filter((t)=>t.id !== action.toastId)
};
}
};
const listeners = [];
let memoryState = {
toasts: []
};
function dispatch(action) {
memoryState = reducer(memoryState, action);
listeners.forEach((listener)=>{
listener(memoryState);
});
}
function toast(param) {
let { ...props } = param;
const id = genId();
const update = (props)=>dispatch({
type: actionTypes.UPDATE_TOAST,
toast: {
...props,
id
}
});
const dismiss = ()=>dispatch({
type: actionTypes.DISMISS_TOAST,
toastId: id
});
dispatch({
type: actionTypes.ADD_TOAST,
toast: {
...props,
id,
open: true,
onOpenChange: (open)=>{
if (!open) dismiss();
}
}
});
return {
id: id,
dismiss,
update
};
}
function useToast() {
_s();
const [state, setState] = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$react$2f$index$2e$js__$5b$client$5d$__$28$ecmascript$29$__["useState"](memoryState);
__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$react$2f$index$2e$js__$5b$client$5d$__$28$ecmascript$29$__["useEffect"]({
"useToast.useEffect": ()=>{
listeners.push(setState);
return ({
"useToast.useEffect": ()=>{
const index = listeners.indexOf(setState);
if (index > -1) {
listeners.splice(index, 1);
}
}
})["useToast.useEffect"];
}
}["useToast.useEffect"], [
state
]);
return {
...state,
toast,
dismiss: (toastId)=>dispatch({
type: actionTypes.DISMISS_TOAST,
toastId
})
};
}
_s(useToast, "SPWE98mLGnlsnNfIwu/IAKTSZtk=");
;
if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) {
__turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$);
}
}),
"[project]/src/components/ui/toaster.tsx [client] (ecmascript)", ((__turbopack_context__) => {
"use strict";
__turbopack_context__.s([
"Toaster",
()=>Toaster
]);
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/react/jsx-dev-runtime.js [client] (ecmascript)");
var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$toast$2e$tsx__$5b$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/components/ui/toast.tsx [client] (ecmascript)");
var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$use$2d$toast$2e$ts__$5b$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/hooks/use-toast.ts [client] (ecmascript)");
;
var _s = __turbopack_context__.k.signature();
;
;
function Toaster() {
_s();
const { toasts } = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$use$2d$toast$2e$ts__$5b$client$5d$__$28$ecmascript$29$__["useToast"])();
return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$toast$2e$tsx__$5b$client$5d$__$28$ecmascript$29$__["ToastProvider"], {
"data-sg-el": "src/components/ui/toaster.tsx:15:4",
"data-sg-name": "ToastProvider",
children: [
toasts.map(function(param) {
let { id, title, description, action, ...props } = param;
return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$toast$2e$tsx__$5b$client$5d$__$28$ecmascript$29$__["Toast"], {
"data-sg-el": "src/components/ui/toaster.tsx:18:10",
"data-sg-name": "Toast",
...props,
children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
"data-sg-el": "src/components/ui/toaster.tsx:19:12",
"data-sg-name": "div",
className: "grid gap-1",
children: [
title && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$toast$2e$tsx__$5b$client$5d$__$28$ecmascript$29$__["ToastTitle"], {
"data-sg-el": "src/components/ui/toaster.tsx:20:24",
"data-sg-name": "ToastTitle",
children: title
}, void 0, false, {
fileName: "[project]/src/components/ui/toaster.tsx",
lineNumber: 20,
columnNumber: 25
}, this),
description && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$toast$2e$tsx__$5b$client$5d$__$28$ecmascript$29$__["ToastDescription"], {
"data-sg-el": "src/components/ui/toaster.tsx:22:16",
"data-sg-name": "ToastDescription",
children: description
}, void 0, false, {
fileName: "[project]/src/components/ui/toaster.tsx",
lineNumber: 22,
columnNumber: 17
}, this)
]
}, void 0, true, {
fileName: "[project]/src/components/ui/toaster.tsx",
lineNumber: 19,
columnNumber: 13
}, this),
action,
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$toast$2e$tsx__$5b$client$5d$__$28$ecmascript$29$__["ToastClose"], {
"data-sg-el": "src/components/ui/toaster.tsx:26:12",
"data-sg-name": "ToastClose"
}, void 0, false, {
fileName: "[project]/src/components/ui/toaster.tsx",
lineNumber: 26,
columnNumber: 13
}, this)
]
}, id, true, {
fileName: "[project]/src/components/ui/toaster.tsx",
lineNumber: 18,
columnNumber: 11
}, this);
}),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$toast$2e$tsx__$5b$client$5d$__$28$ecmascript$29$__["ToastViewport"], {
"data-sg-el": "src/components/ui/toaster.tsx:30:6",
"data-sg-name": "ToastViewport"
}, void 0, false, {
fileName: "[project]/src/components/ui/toaster.tsx",
lineNumber: 30,
columnNumber: 7
}, this)
]
}, void 0, true, {
fileName: "[project]/src/components/ui/toaster.tsx",
lineNumber: 15,
columnNumber: 5
}, this);
}
_s(Toaster, "1YTCnXrq2qRowe0H/LBWLjtXoYc=", false, function() {
return [
__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$use$2d$toast$2e$ts__$5b$client$5d$__$28$ecmascript$29$__["useToast"]
];
});
_c = Toaster;
var _c;
__turbopack_context__.k.register(_c, "Toaster");
if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) {
__turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$);
}
}),
"[project]/src/pages/_app.tsx [client] (ecmascript)", ((__turbopack_context__) => {
"use strict";
__turbopack_context__.s([
"default",
()=>App
]);
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/react/jsx-dev-runtime.js [client] (ecmascript)");
var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$toaster$2e$tsx__$5b$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/components/ui/toaster.tsx [client] (ecmascript)");
;
;
;
function App(param) {
let { Component, pageProps } = param;
return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$client$5d$__$28$ecmascript$29$__["Fragment"], {
children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$client$5d$__$28$ecmascript$29$__["jsxDEV"])(Component, {
"data-sg-el": "src/pages/_app.tsx:8:6",
"data-sg-name": "Component",
...pageProps
}, void 0, false, {
fileName: "[project]/src/pages/_app.tsx",
lineNumber: 8,
columnNumber: 7
}, this),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$toaster$2e$tsx__$5b$client$5d$__$28$ecmascript$29$__["Toaster"], {
"data-sg-el": "src/pages/_app.tsx:9:6",
"data-sg-name": "Toaster"
}, void 0, false, {
fileName: "[project]/src/pages/_app.tsx",
lineNumber: 9,
columnNumber: 7
}, this)
]
}, void 0, true);
}
_c = App;
var _c;
__turbopack_context__.k.register(_c, "App");
if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) {
__turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$);
}
}),
"[next]/entry/page-loader.ts { PAGE => \"[project]/src/pages/_app.tsx [client] (ecmascript)\" } [client] (ecmascript)", ((__turbopack_context__, module, exports) => {
const PAGE_PATH = "/_app";
(window.__NEXT_P = window.__NEXT_P || []).push([
PAGE_PATH,
()=>{
return __turbopack_context__.r("[project]/src/pages/_app.tsx [client] (ecmascript)");
}
]);
// @ts-expect-error module.hot exists
if (module.hot) {
// @ts-expect-error module.hot exists
module.hot.dispose(function() {
window.__NEXT_P.push([
PAGE_PATH
]);
});
}
}),
"[hmr-entry]/hmr-entry.js { ENTRY => \"[project]/src/pages/_app\" }", ((__turbopack_context__) => {
"use strict";
__turbopack_context__.r("[next]/entry/page-loader.ts { PAGE => \"[project]/src/pages/_app.tsx [client] (ecmascript)\" } [client] (ecmascript)");
}),
]);
//# sourceMappingURL=%5Broot-of-the-server%5D__73c39db8._.js.map